home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / cmln0886.arc / SCHEME4.LTG < prev    next >
Text File  |  1986-06-24  |  1KB  |  37 lines

  1.  
  2. Listing 2
  3.  
  4. ;;; Prime Test:
  5. ;;; A PC SCHEME test for primality by finding the smallest integral 
  6. ;;; divisor of a given number N.  The program tests N for divisibility
  7. ;;; by successive integers, starting with 2.
  8. ;;;  
  9. ;;; To test N, enter (prime? N)
  10. ;;; To test duration, enter (timed-prime-test N).  
  11. ;;╗ Thσ listinτ wil∞ prin⌠ N¼ checδ t∩ seσ iµ i⌠ i≤ prime¼ anΣ ì
  12. ;;; prin⌠ thσ tes⌠ duratioε in microseconds.
  13.  
  14. (define (square X) (* X X))
  15. (define (smallest-divisor N)
  16.   (find-divisor N 2))
  17.  
  18. (define (find-divisor N test-divisor)
  19.   (cond (( > (square test-divisor) N) N)
  20.         ((divides? test-divisor N) test-divisor)
  21.         (else (find-divisor N ( + test-divisor 1)))))
  22.  
  23. (define (divides? a b)
  24.   (= (remainder b a) 0))
  25.  
  26. (define (prime? N)
  27.   (= N (smallest-divisor N)))
  28.  
  29. (define (timed-prime-test N)
  30.   (define start-time (runtime))
  31.   (define found-prime? (prime? N))
  32. (define elapsed-time (- (runtime) start-time))
  33. (print N)
  34. (cond (found-prime?
  35.         (print " TIME IN MICROSECONDS ")
  36.         (print elapsed-time))))
  37.